﻿using PoemGame.Domain.GameAggregate;
using PoemGame.Domain.PlayerAggregate;

namespace PoemGame.ApplicationService
{
    /// <summary>
    /// 游戏工厂
    /// </summary>
    public interface IGameFactory
    {
        /// <summary>
        /// 系统的游戏
        /// </summary>
        /// <param name="gameType"></param>
        /// <param name="description"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        Task<GameCreationResult> CreateGame( GameType gameType, PlayType playtype, string description, string context);
        /// <summary>
        /// 玩家创建游戏
        /// </summary>
        /// <param name="player"></param>
        /// <param name="gameType"></param>
        /// <param name="playtype"></param>
        /// <param name="description"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        Task<GameCreationResult> CreateGame(Player player, GameType gameType, PlayType playtype, string description, string context);
       
        /// <summary>
        /// 系统或者管理员创建的多玩家游戏
        /// </summary>
        /// <param name="players"></param>
        /// <param name="gameType"></param>
        /// <param name="playtype"></param>
        /// <param name="description"></param>
        /// <param name="context"></param>
        /// <param name="gameOptions"></param>
        /// <returns></returns>
        Task<GameCreationResult> CreateGame(Player[] players, GameType gameType, PlayType playtype, string description, string context);


    }
}
